#include <iostream>

using std::cout;
using std::endl;


int arr[5] = {1, 2, 3, 4, 5};

//条件：返回的引用生命周期大于函数的
int & getValue(int idx) 
{
    //如果函数的返回值是引用，那执行
    //return语句时，不会发生复制
    return arr[idx];//没有发生复制
}

int getInteger()
{
    int a = 100;
    //如果不是引用时，就会发生复制
    return a;//发生复制
}


int main()
{
    &getValue(0);//可以对该函数的返回值直接取地址
    getValue(0) = 10;
    cout << "arr[0]:" << arr[0] << endl;

    //返回值不能取地址时，表示是一个临时变量
    //&getInteger();//error
    //getInteger() = 10;//error，无法获取临时变量的地址
    int val = getInteger();
    cout << "val:" << val << endl;

    return 0;
}

